home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1998 May: Tool Chest / Dev.CD May 98 TC.toast / Tool Chest / Development Kits / Instrumentation SDK / Instrumentation SDK 1.0.5 / Interfaces & Libraries / CIncludes / InstrumentationMacros.h < prev   
Encoding:
C/C++ Source or Header  |  1997-07-08  |  4.2 KB  |  93 lines  |  [TEXT/MPS ]

  1. /*
  2.      File:        InstrumentationMacros.h
  3.  
  4.      Contains:    Useful C macros for instrumenting code.
  5.  
  6.      Version:    1.0
  7.  
  8.      DRI:        Roger Pantos
  9.  
  10.      Copyright:    © 1984-1996 by Apple Computer, Inc.
  11.                  All rights reserved.
  12.  
  13.      Warning:    *** APPLE INTERNAL USE ONLY ***
  14.                  This file contains unreleased SPI's
  15.  
  16. */
  17. #ifndef __INSTRUMENTATIONMACROS__
  18. #define __INSTRUMENTATIONMACROS__
  19.  
  20.  
  21. #include "Instrumentation.h"
  22.  
  23. #ifndef    INSTRUMENTATION_ACTIVE
  24. #define    INSTRUMENTATION_ACTIVE    1
  25. #endif
  26.  
  27.  
  28. /*  Shielding macros: call is made only if INSTRUMENTATION_ACTIVE is non-zero.  */
  29.  
  30. #define    m_InstInitialize68K()    ( INSTRUMENTATION_ACTIVE ? InstInitialize68K() : 0 )
  31. #define    m_InstTerminate68K()    ( INSTRUMENTATION_ACTIVE ? InstTerminate68K() : 0 )
  32.  
  33. #define    m_InstCreatePathClass( p, n, o, r)    ( INSTRUMENTATION_ACTIVE ? InstCreatePathClass( p, n, o, r) : 0 )
  34. #define    m_InstCreateTraceClass( p, n, c, o, r)    ( INSTRUMENTATION_ACTIVE ? InstCreateTraceClass( p, n, c, o, r) : 0 )
  35. #define    m_InstCreateHistogramClass( p, n, l, u, w, o, r)    ( INSTRUMENTATION_ACTIVE ? InstCreateHistogramClass( p, n, l, u, w, o, r) : 0 )
  36. #define    m_InstCreateSplitHistogramClass( p, n, l, w, k, u, b, o, r)    ( INSTRUMENTATION_ACTIVE ? InstCreateSplitHistogramClass( p, n, l, w, k, u, b, o, r) : 0 )
  37. #define    m_InstCreateMagnitudeClass( p, n, o, r)    ( INSTRUMENTATION_ACTIVE ? InstCreateMagnitudeClass( p, n, o, r) : 0 )
  38. #define    m_InstCreateGrowthClass( p, n, o, r)    ( INSTRUMENTATION_ACTIVE ? InstCreateGrowthClass( p, n, o, r) : 0 )
  39. #define    m_InstCreateTallyClass( p, n, m, o, r)    ( INSTRUMENTATION_ACTIVE ? InstCreateTallyClass( p, n, m, o, r) : 0 )
  40.  
  41. #define    m_InstCreateDataDescriptor( f, r)    ( INSTRUMENTATION_ACTIVE ? InstCreateDataDescriptor( f, r) : 0 )
  42. #define    m_InstCreateDataDescriptors( f, n, r)    ( INSTRUMENTATION_ACTIVE ? InstCreateDataDescriptors( f, n, r) : 0 )
  43. #define    m_InstCreateEventTag()    ( INSTRUMENTATION_ACTIVE ? InstCreateEventTag() : 0 )
  44.  
  45. #define    m_InstEnableClass( c)    ( INSTRUMENTATION_ACTIVE ? InstEnableClass( c) : 0 )
  46. #define    m_InstDisableClass( c)    ( INSTRUMENTATION_ACTIVE ? InstDisableClass( c) : 0 )
  47.  
  48. #define    m_InstDisposeClass( c)    ( INSTRUMENTATION_ACTIVE ? InstDisposeClass( c) : (void) 0)
  49. #define    m_InstDisposeDataDescriptor( d)    ( INSTRUMENTATION_ACTIVE ? InstDisposeDataDescriptor( d) : (void) 0)
  50. #define    m_InstDisposeDataDescriptors( d, n)    ( INSTRUMENTATION_ACTIVE ? InstDisposeDataDescriptors( d, n) : (void) 0)
  51.  
  52. #define    m_InstUpdateHistogram( c, v, n)    ( INSTRUMENTATION_ACTIVE ? InstUpdateHistogram( c, v, n) : (void) 0)
  53. #define    m_InstUpdateMagnitudeAbsolute( c, v)    ( INSTRUMENTATION_ACTIVE ? InstUpdateMagnitudeAbsolute( c, v) : (void) 0)
  54. #define    m_InstUpdateMagnitudeDelta( c, d)    ( INSTRUMENTATION_ACTIVE ? InstUpdateMagnitudeDelta( c, d) : (void) 0)
  55. #define    m_InstUpdateGrowth( c, i)    ( INSTRUMENTATION_ACTIVE ? InstUpdateGrowth( c, i) : (void) 0)
  56. #define    m_InstUpdateTally( c, b, n)    ( INSTRUMENTATION_ACTIVE ? InstUpdateTally( c, b, n) : (void) 0)
  57.  
  58. #define    m_InstLogTraceEvent( c, t, o)    ( INSTRUMENTATION_ACTIVE ? InstLogTraceEvent( c, t, o) : (void) 0)
  59. // InstLogTraceEventWithData(), a var-args function, must be conditionalized manually.
  60. #define    m_InstLogTraceEventWithDataStructure( c, t, o, d, p, s)    ( INSTRUMENTATION_ACTIVE ? InstLogTraceEventWithDataStructure( c, t, o, d, p, s) : (void) 0)
  61.  
  62.  
  63.  
  64. /*  Convenience macros: shortcuts for doing common tasks  */
  65.  
  66. /*
  67.     Use the following three macros to produce entry/exit traces. Usage is:
  68.     
  69.     void    foo()
  70.     {
  71.         TRACE_SETUP;
  72.         LOG_ENTRY( "MyApp:foo" );
  73.     
  74.         // foo's code ...
  75.         
  76.         LOG_EXIT;
  77.     }
  78. */
  79.  
  80. #define    TRACE_SETUP        static InstTraceClassRef __sTrace = 0; InstEventTag __tTag
  81.  
  82. #define    LOG_ENTRY( n )    if ( INSTRUMENTATION_ACTIVE && ( __sTrace || noErr == InstCreateTraceClass( kInstRootClassRef, n, 0, kInstEnableClassMask, &__sTrace))) \
  83.                         { __tTag = InstCreateEventTag(); InstLogTraceEvent( __sTrace, __tTag, kInstStartEvent); }
  84.  
  85. #define    LOG_SUMM_ENTRY( n )    if ( INSTRUMENTATION_ACTIVE && ( __sTrace || noErr == InstCreateTraceClass( kInstRootClassRef, n, 0, kInstEnableClassMask | kInstSummaryTraceClassMask, &__sTrace))) \
  86.                             { __tTag = InstCreateEventTag(); InstLogTraceEvent( __sTrace, __tTag, kInstStartEvent); }
  87.  
  88. #define    LOG_EXIT    if ( INSTRUMENTATION_ACTIVE)    InstLogTraceEvent( __sTrace, __tTag, kInstEndEvent)
  89.  
  90.  
  91. #endif /* __INSTRUMENTATIONMACROS__ */
  92.  
  93.